【Andrew Ng 深度学习视频笔记】-lec2.2

本文记录第二课第二周视频中的概念

batch vs mini-batch

batch:遍历所有的样本之后进行一次梯度下降迭代
mini-batch 遍历若干个样本时就进行一次梯度下降迭代

batch的cost函数随着迭代次数的增加而稳定的下降
mini-batch的cost函数随着迭代次数的增加,波动的下降

mini_batch的大小设置:如果设置为m,则为batch梯度下降;如果设置为1,则为随机梯度下降

指数加权平均:让曲线平滑

$V_t=V_{t-1}(1-B)+\theta_t*(B)$
$0<=B<=1,B$越大,考虑当前的因素越多,波动越大,展开之后得:

这样的计算,在初始的时候$V_0=0$,可能导致初始时很小,可整体除以$1-(1-B)^t$,当$t$很大时,该值趋于1

momentum梯度下降法:

描述:一般的梯度下降法,每次迭代时,计算梯度时只考虑了当前的迭代步的最速下降的方向,这样很可能会沿着目标方向的垂直方向摆动,
而如果考虑之前若干次的方向,则可以间接抵消无效的方向摆动,更加准确朝着目标方向移动,因此,在计算$d_w,d_b$时,可以加上之前的”动量”
$V_{dw} = (1-B)(V_{dw})+B*d_w$
$W=W-\alpha(V_{dw})$

RMSProp

描述:在一般的梯度下降法中,为了让各参数的更新更加均匀,减弱摆动大的方向,加强摆动小的方向,每次迭代更新时,可考虑RMSProp方法
$S_{dw} = B(S_{dw})+(1-B)(d_w)^2$<—小
$S_{db} = B(S_{db})+(1-B)(d_b)^2$<—大
$w:=w-\alpha\frac{d_w}{\sqrt{s_{dw}}}$
$b:=b-\alpha\frac{d_b}{\sqrt{s_{db}}}$
这样每次在更新时,对$w$的更新会加强,对$b$的更新会减弱,为了防止除0问题,可以在上面的分母加上$\epsilon$

Adam算法 Adaptive Moment Estimation

实际上是把momentum和RMSProp结合起来

$V_{dw} = (B_1)(V_{dw})+(1-B_1)*d_w$

$S_{dw} = B_2(S_{dw})+(1-B_2)(d_w)^2$

$V_{dw}^{correc} = \frac{V_{dw}}{(1-B_1^t)}$

$S_{dw}^{correc} = \frac{S_{dw}}{(1-B_2^t)}$

$W:=W-\alpha\frac{V_{dw}^{correc}}{\sqrt{S_{dw}^{correc}}+\epsilon}$

学习速率衰减

视频中介绍了一下几种方法:
1、$\alpha = \frac{1}{1+decay*epochnum}\alpha_0$

2、$\alpha = 0.95^{epochnum}*\alpha_0$

3、$\alpha = \frac{k}{\sqrt{epochnum}}*\alpha_0$

局部最优问题

1、在高维空间中一般不容易遇到局部最优
2、但是容易遇到平稳段,即在某个维度下降得很缓慢,Adam算法可以缓解这个问题